package vis.core.domain.db;

import vis.core.common.mybatis.DbFieldInsert;
import vis.core.common.mybatis.DbFieldSet;
import vis.core.common.mybatis.DbFieldUpdate;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Table;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 用户表
 */
@EqualsAndHashCode(callSuper = true)
@Data
@Table(value = "sys_user", onUpdate = DbFieldUpdate.class, onInsert = DbFieldInsert.class, onSet = DbFieldSet.class)
public class SysUser extends ZBEntity implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;

    private String pid;

    //    绿添系统用户ID
    private String jsNumber;

    //    绿添系统用户ID
    private String bmCode;

    //    绿添系统用户ID
    private String ltId;

    //    备注信息
    private String remark;

    //    当前层级，根节点=0
    private String level;

    //    层级全路径，JSON字符串数组
    private String treePath;

    //    昵称
    private String nickName;

    //    账号
    private String account;

    //    密码
    private String password;

    //    1=男；2=女；默认为1
    private String sex;

    //    	头像
    private String avatar;

    //    移动电话
    private String phone;

    //    座机
    private String telPhone;

    //    邮箱
    private String email;

    //    	是否已禁用；0=可用；1=禁用；默认为0
    private String isDisable;

    //手机号是否通过实名；0=未校验；1=已校验
    private String phoneIsValid;

    //身份证正面照片
    private String idCardImgTop;

    //身份证反面照片
    private String idCardImgBack;

    //身份证姓名
    private String idCardName;

    //身份证号
    private String idCardNumber;

    //身份证实名校验；0=未校验；1=已校验
    private String idCardIsValid;

    //脸部识别校验；0=未校验；1=已校验
    private String isFaceValid;

    //会议资格;0=无资格；1=有资格
    private String mtAuth;

    //    用户唯一会议号
    private String mtCode;

    //    会议资格结束时间
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime mtAuthCloseTime;

    //参数：角色ID
    @Column(ignore = true)
    private String roleIds;

    //参数：角色名称
    @Column(ignore = true)
    private String roleNames;

    //参数：是否为超级用户
    @Column(ignore = true)
    private boolean isRoot;
}
